Nech funkcia $f$ je $n$-krát diferencovateľná v bode $a \in \mathbb{R}$. Potom Taylorovým polynómom stupňa $n$ funkcie $f$ v bode $a$ sa nazýva polynóm (v premennej $x$) $$ \sum_{i=0}^n \frac{f^{(i)}(a)}{i!} (x-a)^i = f(a) + f'(a) (x-a) + \frac{f''(a)}{2!} (x-a)^2 + \cdots + \frac{f^{(n)}(a)}{n!} (x-a)^n . $$ Špeciálne Taylorov polynóm v bode $a = 0$ má tvar $$ \sum_{i=0}^n \frac{f^{(i)}(0)}{i!} x^i = f(0) + f'(0) x + \frac{f''(0)}{2!} x^2 + \cdots + \frac{f^{(n)}(0)}{n!} x^n . $$
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from maux import *
Zostrojenie Taylorových polynómov stupňa $n=0,\ldots,5$ pre funkciu $$y = \mathrm{e}^x$$ v bode $0$.
#### vstupné údaje
def f(X): return np.exp(X)
X = np.linspace(-1, 1, 6*10+1)
## derivácie v bode 0
def derivative(n): # n-tá derivácia
return 1
## Taylorove polynómy v bode 0
def T(n, X): # n-tý Taylorov polynóm
if n >= 0:
return T(n-1, X) + derivative(n) * X**n / np.math.factorial(n)
else:
return np.zeros(len(X))
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(12, 5)
### diagram
init_subplot(ax)
ax.set_title(r"Taylorove polynómy stupňa $n$ patriace funkcii $y = \mathrm{e}^x$ v bode $0$")
## graf funkcie
color = ax.plot(X, f(X), 'k', label="graf funkcie")[0].get_color()
ax.plot(0, f(0), 'o', c=color)
## grafy Taylorových polynómov
for n in range(0, 5+1):
ax.plot(X, T(n, X), label="$n={}$".format(n))
## zvyšné nastavenia
ax.legend()
ax.grid()
### archivácia obrázka
#plt.savefig("ex05_1_1.png")
### samotné zobrazenie
plt.show()
plt.close('all')
To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
Dokumentácia:
#### vstupné údaje
def f(X): return np.exp(X)
X = np.linspace(-1, 1, 6*10+1)
## derivácie v bode 0
def derivative(n): # n-tá derivácia
return 1
## Taylorove polynómy v bode 0
def T(n, X): # n-tý Taylorov polynóm
if n >= 0:
return T(n-1, X) + derivative(n) * X**n / np.math.factorial(n)
else:
return np.zeros(len(X))
#### obrázok s n-tým Taylorovým polynómom
def plot_taylor(n):
fig, ax = plt.subplots()
fig.set_size_inches(12, 5)
init_subplot(ax)
ax.set_title(r"Taylorov polynóm stupňa $n = {}$ patriaci funkcii $y = \mathrm{{e}}^x$ v bode $0$".format(n))
color = ax.plot(X, f(X), label="funkcia")[0].get_color()
ax.plot(0, f(0), 'o', c=color)
ax.plot(X, T(n, X), label="polynóm")
ax.set_ylim(0, 4.4)
ax.legend()
ax.grid()
plt.show()
plt.close('all')
#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_taylor,n=widgets.IntSlider(min=0,max=5,step=1,value=0));
Zostrojte Taylorove polynómy stupňa $n=1,3,5,7$ pre funkciu $$y = \sin x$$ v bode $0$. Nakreslite ich grafy!
Zostrojte Taylorove polynómy stupňa $n=0,2,4,6$ pre funkciu $$y = \cos x$$ v bode $0$. Nakreslite ich grafy!
Zostrojte Taylorove polynómy stupňa $n=0,1,2,3$ pre funkciu $$y = \log(1+x)$$ v bode $0$. Nakreslite ich grafy!
Zostrojte Taylorove polynómy stupňa $n=0,1,2,3$ pre funkciu $$y = \frac{1}{1-x}$$ v bode $0$. Nakreslite ich grafy!